Session Template Packages for Automated Load Testing

ABSTRACT

A computer-implemented method includes scanning a clip of messages that includes message requests and message responses arranged in a sequence. The scanning is performed based on one or more search parameters and produces a list of one or more name/value pairs. The clip is utilized to perform a load test on a target website. Each name/value pair has a corresponding value. For each name/value pair in the list a message request in the clip is identified where the corresponding value is first used. Then, looking backwards in the sequence from the message request where the corresponding value is first used, prior message responses are located where the corresponding value is found. An extraction point is specified in the clip for the corresponding value as a latest message response in the sequence where the corresponding value was returned from the target website. The corresponding value is then stored as a property.

TECHNICAL FIELD

The present disclosure relates generally to cloud computing; morespecifically, to automated systems and methods for functional and/orload testing of websites or features of message-based intranet,Internet, or browser-based applications.

BACKGROUND

Individuals and companies today are increasingly reliant on informationand commerce conducted over widely accessible electronic communicationsnetworks, such as the Internet. To be successful, a business engaged inelectronic commerce with consumer-facing websites must ensure a highlevel of website performance under normal, as well as extreme trafficconditions. External events, such as a natural disaster, or certaincalendar dates, such as the Super Bowl, Cyber-Monday, Tax Day, orValentine's Day, can drive large numbers of users to a website, thusincreasing the traffic load immensely. Many information technologysystems begin to deny service, or fail to process message trafficefficiently, when communications traffic exceeds a processing capacityof the system. Such failures in communication can significantly impairthe operations of an enterprise in many ways. For example, slowerwebsite performance is known to cause users/visitors to leave thewebsite sooner. Another consequence of poor performance is that thewebsite may be downgraded in search engine results rankings. A businessenterprise can thus suffer losses in immediate and future sales,advertising revenue, and customer loyalty if their website responds in aslow manner or—worse, if the site crashes under the increased load.

In recent years, enterprises and developers have sought an easy andaffordable way to use cloud computing as, a way to load and, performancetest, web sites and web-based applications. Cloud computing gets itsname from the fact that the machine, storage, and application resourcesexist on a “cloud” of servers. In cloud computing shared resources,software and information are provided on-demand, like a public utility,via the Internet. Cloud computing is closely related to grid computing,which refers to the concept of interconnecting networked computers suchthat processing power, memory and data storage are all communityresources that authorized users can utilize for specific tasks.

Load testing a web-based application or website typically involvessimulating a very large number (e.g., up to or beyond 1,000,000) ofvirtual website users via Hypertext Transfer Protocol (HTTP) or HTTPSecure (HTTPS) message intercommunications with the target website. Byway of background. U.S. Pat. No. 7,844,036 describes a software toolwhich allows a user to efficiently compose and execute a message-basedload test on a target website. The user is provided with a graphicaluser interface (GUI) that can be used to generate a test compositioncomprising a plurality of message clips organized into one or moretracks. Each clip typically includes a plurality of messages, with eachtrack being organized into one or more bands. Each track and each bandmay run contemporaneously to send messages to a target device orapplication. In this manner, a user may create complex message streamscontaining thousands of messages that are played out according to aparticular sequence timing, and tempo to test the performance of awebsite.

One of the problems with existing load testing approaches is that whenusing a gateway application (commonly referred to as a gateway session)a token or value (also referred to as a property in the presentapplication) is typically produced by the server associated with thetarget website. Such parametric values are commonly produced toauthenticate the user. After the website server sends a token or valueto a user, subsequent requests to the website need to send the samevalue or token back to the server to maintain communications,

Another difficulty that arises with generating a load test comprisingthousands of virtual users is that the values sent from the targetwebsite to each user change dynamically. Values sent to each virtualuser from a target website for each thread of execution need to bepropagated or substituted back into subsequent messages communicated tothe website in order to make the test run properly. If a wrong value issent back to the target website, the load test will fail. In the past,this has necessitated a very tedious, error-prone, and labor-intensiveprocess wherein a performance engineer is required to manually scanthrough a failed load test session recording to identify where in amessage clip a particular value was received from a target website.

BRIEF DESCRIPTION OF THE DRAWINGS

The present disclosure will be understood more fully from the detaileddescription that follows and from the accompanying drawings, whichhowever, should not be taken to limit the invention to the specificembodiments shown, but are for explanation and understanding only.

FIG. 1 illustrates an example high level architectural;diagram of anin-progress load test of a target website.

FIG. 2 is an example graphical user interface window showing a menu ofoptions presented to a user for launching a session template packagewizard.

FIG. 3 is an example graphical user interface window that presents auser with a number of options for scanning a clip for session state.

FIG. 4 is an example graphical user interface window that presents theresults of the automated scan of the clip as a listing of name/valuepairs found in recorded responses and subsequent recorded requests.

FIG. 5 is an example graphical user interface window showing a filteredset of name/value pairs found after automated scanning of a clip.

FIG. 6 is an exam pie graphical user interface window showing variousoptions presented when Substring parsing selected as a value retrievalmethod during scanning.

FIG. 7 is an example flow diagram of a sequence of steps for automatedscanning of a clip to create and apply a session template package.

FIG. 8 is an example graphical user interface window illustrating howsession templates and packages may be applied to a Test Clip from acentralized view showing all session templates and packages in a mannersimilar to viewing a folder list in an operating system.

FIG. 9 is an example flow diagram of a sequence of detailed steps for amethod for applying a session template package to a message clip.

FIG. 10 is an example graphical user interface window showing theresults following application of a session template package to a testclip.

FIG. 11 is a generalized circuit schematic block diagram of a networknode.

DETAILED DESCRIPTION

In the following description specific details are set forth, such asserver types, parametric values, message response types, structuralfeatures, method steps, etc., in order to provide a thoroughunderstanding of the subject matter disclosed herein. However, personshaving ordinary skill in the relevant arts will appreciate that thesespecific details may not be needed to practice the present invention. Itshould also be understood that the elements in the figures arerepresentational, and are not drawn to scale in the interest of clarity.

References throughout this description to “one embodiment” embodiment“,“one example” or an example” means that a particular feature, structureor characteristic described in connection with the embodiment or exampleis included in at least one embodiment. The phrases “in one embodiment”,“in an embodiment”, “one example or an example” in various placesthroughout this description are not necessarily all referring to thesame embodiment or example.. Furthermore, the particular features,structures or characteristics may be combined in any suitablecombinations and/or sub-combinations in one or more embodiments orexamples.

In the context of the present, disclosure the term “cloud” broadlyrefers to a collection of machine instances, storage and/or networkdevices that work together in concert.

A “message” generally refers to a unit of data that can be sent via anelectronics communications network, e.g., the Internet, to anothercomputational or communications system or device, e.g., to a server. Byway of example, a message could represent a communication sent to aqueuing system, a REST call, or a HTTP request. A message could also beinstantiated entirely or partially as a single operation, such as a webservice call in any one of a variety of forms, e.g., XML, JMS, HTML,JSON, etc.

A “message clip” (or “clip” for short) comprises a set of one or moremessages that includes a specification of the timing and/or dependencieswithin that set of messages. A clip typically comprises a plurality(e.g., hundreds of thousands) of sequenced messages that form part of alarger load test composition.

The term “server” broadly refers to any combination of hardware orsoftware embodied in a computer (i.e., a machine “instance”) designed toprovide services to client devices or processes. A server therefore canrefer to a computer residing on a network (i.e., a network node). Theserver runs a server operating system from computer-executable codestored in a memory, and which is provided to the user as virtualized ornon-virtualized server; it can also refer to any software or dedicatedhardware capable of providing computing services.

In the context of the present disclosure, “load” servers (also referredto as “test” servers) are servers deployed and utilized primarily togenerate a test load on a target website. That is, load servers play thetest composition, generating a load on a target (customer) website andweb applications. Load servers also function to report back results ofthe load test and statistics in real-time. “Analytic” or “result”servers are deployed and utilized primarily to collect the real-timetest results from the load servers, aggregate those results, stream theresults to real-time dashboards, and store them in a database.

The term “real-time” refers to a level of computer responsiveness that auser senses as sufficiently immediate or that enables the computer tokeep up with some external process (for example to presentvisualizations of load test results as it constantly changes). Thus,real-time is a mode of computer operation in which the computer collectsdata, analyzes or computes with the data reports (e.g., visuallydisplays) and/or stores the results nearly simultaneously, i.e., withinmilliseconds or microseconds.

Run-time refers to the time during which a program is executing, or, inthe case of a load test composition, when the composition is beingplayed. In other words, when a user starts a program that runs on aprocessor-based system or computer, it is run-time for that program.

A “grid” or “test grid” refers to a collection of interconnected loadservers and result servers that may be used to run a load test on atarget website or web applications. As disclosed herein, a computerprogram or grid wizard may be utilized to automatically determine theglobal, cross-cloud, resources needed to execute a test by examining thetest plan or script (also referred to as a test composition).Furthermore, the computer program can automatically allocate thoseserver resources required for the test across multiple different cloudproviders: verifies that the allocated servers are operational: and thatthe allocated servers are running proprietary load testing software orcomputer program product correctly. The computer program or product alsomonitors the allocated servers, replacing non-operational servers (whenallocated, and during execution of the test) and displays results frommultiple globally distributed clouds in a real-time streaming dashboardwhich requires no user initiated refresh.

Parameters, represented as name/value pairs are used in message requestand response exchanges between browsers (or load servers) and websiteservers. The value portion of the name/value pair can be an alphanumericstring or globally unique identifier (QUID) of arbitrary length that canbe dynamically generated at runtime by a website server. For instance, aname/value pair may take the form of “A=B”, where “A” is the name and“B” is the value. Name/value pairs are built from the requests, whereasvalues are retrieved from responses.

In the context of the present disclosure, a “session template” or“template” is defined as logic (e.g., an algorithm embodied as code)encoded in a routine that is used to extract a single value in a messageof a recorded load test session. The logic identifies a point orlocation in the message or clip where the single value is extracted. Inone embodiment, a session template can be created from a messageresponses selected text using a session template wizard, which generatesa GUI that allows the user to implement and execute the various methodsand steps described herein.

A “session template package” denotes a collection of session templatesgrouped together and identified by a name or descriptor.

The term “property” broadly refers to attributes associated with messageor other object. In the example embodiments described, a property may beconsidered to be a program variable associated with a particular messageor object. Properties may thus be used to pass values to other objects,substitute the values into messages to be sent, implement conditionallogic within a given composition or clip, validate received responses,and so forth.

In one embodiment, an automated tool (wizard) provides a GUI that allowsa user to specify settings for the automated scan of the recordedrequests and responses of a message clip. Using various fields providedin the GUI, the user can specify the strings or items that the scannersearches for in the message clip. While scanning does not alter orchange the message dip itself, the scanning process does produce a listof name/value pairs. Values that are provided by the website in aresponse and which are used in subsequent message requests areparameterized and stored as a variable.

A session template is created comprising the logic for extracting asingle value that needs to be parameterized as a variable (e.g., aproperty) to be applied to subsequent requests. The tool also allows auser to selectively collect a group or bundle of session templates intoa package for use during run-time of a load test. At run-time, thestored variable is then substituted in the identified message requeststhat require a correct, dynamic value sent back to the website server.The application program or session template wizard described in thepresent disclosure also allows a user to edit a previously createdsession template package.

In another embodiment, in addition to allowing a user to create asession template package comprising one or more session templates, thewizard also allows a user to apply a previously created session templatepackage (e, g., without performing the scan) to a different messageclip. In still another embodiment, the wizard provides a user with theability to create an individual session template

FIG. 1 illustrates an example high level architectural diagram showing aload test being conducted on a target website 12, which includes aplurality of web servers 17 coupled to Internet cloud 15 through a loadbalancer 18 and a firewall 19. Web servers 17 are interconnected with aplurality of application servers 15 and a plurality of database servers14.

Target website 12 is shown connected to a public cloud 11 via Interncloud 15 a. Public cloud 11 includes a main instance 23 coupled to adatabase 24. Database 24 may be used to store test results, storemetadata indicative of the test definition, and to store monitoring data(e.g., CPU metrics) generated during the load test. Main instance 23 isalso shown coupled to a pair of analytic servers 22 and a plurality ofload servers 21 within cloud 11, consistent with a snapshot view of thestart of a process of deploying a test grid utilized to run the loadtest. It is appreciated that cloud 11 may comprise multiple cloudsassociated with multiple different cloud providers. In the exampleshown, main instance 23 is a virtual machine deployed on a serverprovided in cloud 11 that communicates with a browser application. Inone embodiment, main instance 23 may include a results service(designated as a “reader” results service as opposed to all of the otherremote, “writer” results services) which reads data from database 24 andserves it to a web application, which in turn formats the data andserves it to an analytic dashboard in the browser. In operation, maininstance 23 executes the coded sequence of computer executed steps e.g.,from code stored in a memory) that allocates the server resourcesrequired for the test across one or multiple different cloud providers.The same application that allocates/verifies server resources may alsoverify that the allocated servers are operational to conduct the websiteload test. The main instance may also execute code that implements loadtest results aggregation steps and storage of results data in database24.

Connected to the front-end of cloud 11 through Internet cloud 5 is alaptop computer 20 associated with a user who may orchestrate deploymentof the test on the target website 12. It is appreciated that in otherimplementations, computer 20 may comprise a desktop computer,workstation, or other computing device that provides a user interfacethat allows a user to create and execute the test composition, definethe parameters of the grid, initiate the load test, analyze/reviewresults of the load test in real-time, and launch the session templatewizard described herein. Persons of skill in the cloud-computing artswill appreciate that the user interface may be web-based so it can beaccessed from any computer having web-browser capabilities from anylocation in the world, without installation of specialized software.

Persons of skill in the art will further understand that the softwarewhich implements main instance 23 may also be downloaded to the user'slaptop computer 20 or implemented on a separate hardware appliance unitlocated either at the user's premises (e.g., behind the firewall) oranywhere in clouds 15 or 11. It is further appreciated that laptop 20 isrepresentative of a wide variety of computer devices such asworkstations, personal computers, distributed computer systems, etc.,that may be utilized by the user to launch the method forprovisioning/running the cross-cloud test grid, analyzing streamingreal-time results, monitoring the performance of the actual load test,collecting and storing load test results data, as well as running the,wizard used to scan message clips and create one or more sessiontemplates to be applied at run-time to the same or a different loadtest.

Continuing with the example of FIG. 1, an application program running onmain instance 23 operates, to create a graphical user interface (GUI)that allows a user of laptop 20 to remotely interact with theapplication, view fi monitor the test results in real-time, and modifyparameters/test conditions dynamically during the actual test. The sameor different application program running on main instance 23 operates toprovide a GUI for creating a session template or package of sessiontemplates. (For purposes of the present disclosure, the session templatepackage wizard is considered synonymous with the application program orsystem program that performs the method and operations describedherein.) In another embodiment the session template package wizard maybe run on a different computer or processor-based system.

The overall testing process begins with the user creating asophisticated test plan or composition via a GUI of either the sameapplication program running on main instance 23 or a GUI associated withanother web browser application. The GUI may be utilized that generatecomplex parallel message streams comprising a plurality of message clipsfor website testing. In one example, the test plan may be created in theform of a visual message composition (analogous to a music composition)for testing web sites, web applications, or web services, such as thatdescribed in U.S. Pat. No. 7,844,036.

Once the test has been defined and the parameters set (e.g., number ofservers, server locations, etc.) via the grid wizard, upon user input,the user main instance 23 may initiate the process of actually deployingand allocating the specified resources needed to execute the testcomposition by interacting with an application programming interface(API) of one or more cloud providers. For reasons of clarity, an arrayof just fifty-four interconnected load servers 2 shown allocated pereach result server 22 in the example of FIG. 1. It is appreciated,however, that the system and method described herein is highly scalableand capable of deploying/allocating a massive amount of resourcesincluding hundreds or thousands of load servers as well as acorresponding portion or ratio of result servers, depending on theparameters specified by either the user or system prior to deployment ofthe grid.

FIG. 2 is an example graphical user interface window 26 showing a menuof options presented to a user for launching a session template packagewizard. In one embodiment, a session template can be created from amessage response's selected text using the session template packagewizard shown in window 26 from within a message editor component of aGUI used for creating a test composition. In another embodiment, a testclip may also be selected from a test clips list component, with theactual string to search for being specified from within the sessiontemplate wizard. In the example of FIG. 2, the session template packagewizard is shown being launched from a test clips list by selecting atest clip and then right-clicking (e.g., using a mouse or other userinput selection device) to select the Launch Session Template PackageWizard command (shown highlighted in window 26). Existing sessiontemplates or session template packages may also be applied using theApply a Session Template or Package command.

FIG. 3 illustrates an example graphical user interface window 30 thatpresents a user with a number of options following the launching of thesession template wizard. In the example shown, the wizard allows a userto create a session template package, with each session templatecomprising the logic behind how to extract and substitute values. Asdiscussed above, a package is a collection of templates, with eachtemplate being used for a single value extraction and a set ofsubstitutions. In other words, the session template package wizardallows a user to create a collection of different value extractions andsubstitutions. Note that in one embodiment, while the session templatepackage wizard runs, the program used to create and/or run the load testcomposition on the target website maintains a draft of the original testclip. If the template is applied, the original test clip is then renamedwith the date/time appended to it such that the parameterized clip keepsthe original name.

As can be seen, a data entry field 31 allows the user to assign a nameto package that is to be created. In field 32, the user may specify afile location where the package is to be stored. Description field 33provides the user with the option of creating a free-form description ofthe package. Include and exclude fields 34 and 35 respectively allow theuser to specify (e.g., by checking the appropriate boxes) the things oritems searched for, and not searched for, in the clip. These fields canbe changed prior to each scan that is performed on the clip. Note thatscanning does not change the clip being scanned; rather, it provides theuser with a list of name/value pairs so an intelligent determination canbe made as to what value needs to be parameterized as a variable, i.e.,create a session template for.

As shown in the example of FIG. 3, include field 34 lists five differentoptions at a high level, all of which are shown checked or selected. Forinstance, in this example the clip scan includes HTTP headers from therecorded responses, envelope nodes and attributes (e.g., SOAP, REST,etc.), POST data associated with a message, Query string parameters, andlocation. When the location box is checked, the user may select eitheror both of two different options: the entire URL and REST parameters.

The exclude field 3 delimits the scan by excluding those itemsindicated. In this example, values shorter than two characters (defaultcase) are excluded, as well as certain specified HTTP header names andlisted parameter values. Alternately, a user may check “Use a customdelimiter” to introduce a custom delimiter from a given environment.Name/value pairs are commonly delimited by standard alphanumericcharacters such as an ampersand (i.e., “name=value&name=value”) orsemicolon (i.e., “name=value;name=value”. Using a custom delimiterallows for parsing of requests to look for name/value pairs betweenspecific, non-standard, custom delimiters.

It is appreciated that other embodiments may include a variety ofdifferent options in addition to or as an alternative to those shown.

When the user is finished entering information and selecting the optionsshown in the various fields, they may click on, scan clip button 37 tostart automated scanning of the clip. The name/value pairs produced as aresult of the scan are then listed in field 36 at the bottom of window30. Once clicked, scan clip button 37 becomes inactive and the scanbegins. Scanning comprises an automated (computer-implemented) processwherein the wizard program goes through an entire clipmessage-by-message, each message having a request and a response, tolook for values identified first in a message response and found in atleast one subsequent request, based on the options and scanningdelimiters selected. After the clip has been scanned, button 37automatically becomes re-enabled in the event that either include field34 or exclude option field 35 is changed.

FIG. 4 is an example graphical user interface window 40 that shows field36 populated with thirty-one name/value pairs found as a result ofautomated scanning of a clip. During the scanning process, progress bar42 advances from left to right as the table in field 36 gets populated.After the scan, a checkmark icon 41 appears in the upper right-handportion of window 40. Each row shown in field 36 lists a singlename/value pair that was found during the scan. Note that the valueslisted typically are very long GUID strings. Rows whose names havevalues for suggested replacement may be checked.

In the embodiment shown, the scan results are presented in rows havingthe following column entries: Name, which is assigned by the wizardbased on the property name (found in column 6). This name is used torefer to the associated name/value pair in the session template packageand in any subsequently produced template lists. Value, whichcorresponds to the string found (e.g., the value for a location may be arelative URL. The “Found in Response” message is the suggestedextraction point because it is closest to the first message where thename/value pair is used. In one embodiment, the extraction point may beset on a previous message by expanding (“clicking on”) the name/valuepair row, which reveals all message responses w here the, value isfound.

Used in Request(s) is the clip component where the name/value pair isfirst used by the clip. For instance, a value or property that is foundin Message29 may not be used until a subsequent Message43. Property Nameis the name of the Custom Property which will be created for eachvirtual user, to dynamically store the value retrieved from the responseand substituted into subsequent requests. This is distinct from theassigned name in column 1 although the value may be the same. ValueRetrieval Method indicates the methods) used to extract the value. Eachrow also has a Value Retrieval Method and an Edit button. In theembodiment shown, the value retrieval method types include: Substringparsing, JSON (JavaScript Object Notation), XPath (the XML PathLanguage), New Script, which allows a user to define a new script to beused for extraction, and Existing Script, which specifies use of apreviously-defined script.

In reviewing the scan results the user may check the left-hand box ofany row to add it to the session template package, or click thecorresponding edit icon (on the right-hand side of field 36) to makechanges to the selected value retrieval method. For example, a user mayclick on the edit icon for a row to view or change details for theSubstring or to review or edit the XPath detected by the scan. In oneimplementation, the row is checked automatically when changes are madevia either the XPath Editor or Substring Parser windows. Optionally,the'user may check the Show Checked items Only box located just belowicon 41 to narrow the list displayed to only those items (i.e., values)selected for replacement. FIG. 5 is an example graphical user interfacewindow 50 with the Show Checked Items Only box checked, such that onlyfour checked name/value pair out of thirty-one total name/value pairsfound are listed in field 36.

Clicking the “OK” button 44 saves the session template package using thespecified name, folder location, and description provided in respectivefields 31-33. Once the settings for each checked row are satisfactory,the user may click the “Apply” button 43. That is, when the user clickson button 43, all checked rows are sent to the server. Then, working ona draft of the clip, the session template package wizard createsclip-level custom properties, and adds the corresponding message-levelproperty paths that utilize them, as well as the property sets. Progressbar 42 indicates the real-time status as the specified values areapplied to the draft clip. In other words, applying the session templatepackage means that all of the dynamic values received from the websiteserver are parameterized such that all subsequent message requestscontain the correct dynamic values that are to be sent to the websiteserver. Clicking “OK” button 44 again renames the original clip, andpromotes the draft to the original clip name, thereby completing theprocess and exiting the wizard.

In sum, he session template package wizard provides a user with a GUIthat allows them to define what value will be extracted, how it is to beextracted, from where in the message clip it will be extracted, storesit in a variable, and then use the value from the variable in subsequentmessages. Creating session templates, in this sense, involves creatingand storing the logic used to properly extract values. At run-time, thislogic is applied such that all of the dynamic values received from thetarget website are properly extracted and substituted in all othersubsequent requests that require the value be sent back to the websiteserver.

Persons of skill in the art will appreciate that the session templatepackage need only be applied once to the clip. The clip can then beplaced in a Composition, and multiplied many times to simulate a verylarge number of virtual users. In other words, when a load testcomposition plays out as a thousand virtual users on a target website,the load servers running the composition will send requests to websitesewer(s) with dynamically changing values such that the websiteserver(s) will think there is a different browser running for each oneof the virtual users. It is further appreciated that the individualsession templates, as well as an entire session template package, may beapplied to other clips.

FIG. 6 is an example graphical user interface window 60 showing variousoptions presented to a user when Substring parsing is selected as avalue retrieval method during scanning of a clip. In this example,window 60 comprises a dialog box 61 that shows the recorded responsesfor a given clip run as part of a load test of a target website. Beneathdialog box 61 are a set of data fields that provide the user with theoption of specifying various “anchors” or parameters for use inextracting values during automated scanning. (An “anchor” in the contextof the present disclosure is some attribute or string in a message thatbounds or characterizes a value to be extracted, and which does notchange between responses.) In one embodiment, the user may invokeSubstring parser window 60 by first locating a row of a name/value pairof interest in results field 36 (see e.g., FIG. 5) and then selectingSubstring as the value retrieval method. With Substring selected as thevalue retrieval method for the row, the user may then click the editbutton on the right-most end of the row.

Leading Text and/or Trailing Text may optionally be specified to delimitthe Substring search by first selecting the given text to use and thenclicking the corresponding “Insert Selected” button shown on theright-hand side of window 60. Leading Text field 62 specifies anyleading text before the string to include in the search. Similarly,Trailing Text field 63 specifies the trading text which denotes the endof the value to extract.

For instance, in the example of FIG. 6 the user has selected a leadingtext string (=“wpLoginToken” value=″) and a trailing text string (″) forsubstring parsing, as shown in fields 62 and 63, respectively. Clickingon the Test button 64 tests the current selections and produces a testresult in field 65, which in this case is the dynamic value extracted(i.e., “a90760293a7183af1803c56fd0ae41a”) Other anchor options that theuser may specify for Substring parsing include value length (e.g., 32characters long) and End of Text. In yet another embodiment, when thevalue to be extracted occurs in an HTTP Response header, the user maychoose the name of the HTTP Response header in which the string occurs(not shown in FIG. 6). Still other embodiments may include otheradditional extraction options.

In the embodiment shown in FIG. 6 the user is also given the additionaloption of specifying a regular expression for use in extracting values.An example where a user may wish to utilize a regular expression is asituation where the trailing text of a value is known to be dynamic(non-fixed), or where the value to be extracted is found in free-formtext sent back from the website server.

As discussed previously, other value retrieval method options includeextracting values from a JSON object, XPath, defining a New Script forextracting values, or using an Existing Script taken from a storedlibrary of scripts. It is appreciated that in various embodiments thesession template package wizard may provide separate GUI editor windowsfor specifying, reviewing, revising and testing the parameters, values,and/or expressions specified. For example, an XPath editor window mayallow a user to edit XPath values, which may then be tested in themanner described above to ensure that the XPath is valid (i.e., itcaptures the extracted value within the given XPath in a Test Resultfield). A New Script editor window may include a dialog box or fieldused to specify parameters for generating a script to replace aspecified value.

Persons of skill in the computing arts will appreciate that each clipcan contain hundreds or even thousands of messages, and for each onethere may be a great multitude of name/values pairs. And for eachname/value pair, the wizard described herein searches back on all of theprevious messages to find where the value first appeared. Thus, ifperformed in a conventional sequential manner according to a prior artapproach the scanning operations described herein would result inexceptionally long run-time, such that a single scan may take one ormore hours to complete. In one embodiment, the session template packagewizard is able to complete the operations involved in scanning, of aclip in seconds or a few seconds, even for clips with thousands ofmessages, thereby greatly enhancing the usefulness of the software tool.

One of the ways that the session template package wizard program is ableto perform such a massive search through large numbers of messages insuch a short amount of time as compared with prior art methods is byexecuting all of the tasks involved in parallel, using multiple threads.In the context of the present disclosure, a “thread” refers toinformation associated with a single individual computing task, process,or a particular service request. The session template package wizardcomputer program is configured to execute multiple threads—all inparallel—thereby allowing the program to execute many search actions atone time.

In the multi-threaded architectural approach, a list of name/value pairsmay be built or constructed in one thread. Once the list of name/valepairs has been thus created, a determination of valid “hits” may proceedin a multi-threaded manner wherein all of the search tasks are performedin parallel For example, after a list of name/value pairs has beenbuilt, the automated program may use multi-threading to determinewhether each distinct value that was found in a message clip was used ina prior request with the name stored, in a given session template. A newthread may be created and placed in the thread pool corresponding toeach given value for which a search is to be performed. In other words,each thread corresponds with a starting message in the algorithmdescribed herein. By way of further example, if it is found thatMessage10 in a clip contains one or more name/value pair hits, thenthat, results in one thread being generated. Execution of that onethread produces a search through all previous messages (i.e.,Message1-Message9) for every name/value pair found in Message10. Thisapproach enables rapid build-up of the list of name/value pairs.

In one embodiment, in addition to the use of multi-threading forscanning to extract values, multi-threading may also used during theapplication of a template or package of templates to a clip. In otherwords, multi-threading may also be utilized to perform variablesubstitutes in all of the other message requests that require a dynamicvalue returned to the website server.

In still another embodiment, instead of scanning a clip to build list ofname/vale pairs that results in the creation of a package of sessiontemplates, a wizard or coded program, which, when executed, generates aGUI that allows a user to create an individual session template. Thewizard for creating an individual session template starts from a singleresponse and allows the user to select a certain value found in thatresponse basically bypassing all of the name/value pair creations. Usingthe value selected in the given response, the wizard then proceeds inthe same manner described above with respect to the session templatepackage wizard, except that only a single template is created comprisingthe logic for extracting the certain value, storing it as a variable,which variable can then be substituted or replaced in those subsequentresponses that need to use it.

An individual session template that has been created and stored in therepository can then be added to a package. In other words, sessiontemplate packages are editable.

FIG. 7 is an example flow diagram of a sequence of steps for automatedscanning of a clip to create and apply a session template package. Oncethe process begins, the clip is scanned message-by-message to identifyand locate name/value pairs that satisfy the user-selected searchcriteria and methods. As shown in block 71, scanning produces a list ofname/value pairs found in the clip. For each name/vale pair found thecomputer program then determines the message request in the clip wherethe name/value pair first appears (block 72) Next, for each of thename/value pairs the wizard looks backwards in the sequence of messagesto determine whether the value was found in a prior response from theserver (block 73). If not, the name/value pair is discarded as aninvalid hit (block 74).

The extraction point is specified as the latest response where the valuewas first returned (block 75). The returned value is then stored as aproperty (block 76). That is, a template is created that includes thelogic for extracting that particular dynamic value found at thatparticular message response in a clip. The property is then substitutedin the subsequent message requests where the name/value pair was found(block 77).

FIG. 8 is an example graphical user interface window 80 showing howsession templates and packages may be managed in a manner similar toviewing a folder list in an operating system. In the example shown, auser has highlighted or otherwise selected the Session Templates folderentry on the left-hand side of window 80, which results in the openingof the contents of that folder in field 81 on the right-hand side. Thisexample further shows that the user has right-clicked on a particularsession template package, thereby opening field 82 which provides a listof actions to be taken with respect to the selected session templatepackage. In this case, the user has positioned the mouse cursor orutilized another input device to highlight the “Apply To A Test Clip”option in field 82. At this point, the user may left-click to apply thepackage to a clip.

FIG. 9 is an example flow diagram of a sequence of detailed steps for amethod for applying a session template package to a message clip. Themethod begins in block 91 with the step of applying, for a given sessiontemplate, the extraction method to each and every message in a clipuntil a non-empty value is returned. As its name implies, a non-emptyvalue refers to a string that is not empty. For example if no match isfound, the extraction log is will return an empty string, or“not-a-hit”. At block 92, the program looks backwards (in the sequenceof messages that form a clip) to determine whether the value that wasfound was used in prior requests with the name stored in the givensession template. If so, then the value found is not a valid hit, i.e.,it is discarded (block 93). If the value was not used in a previousrequest in the sequence, a search is performed to determine whether thevalue is used in any future (i.e., subsequent) requests in the clip withthe name stored in the session template (block 94). In the event thatthe value is not used in a future request, then that value is discardedas not being a valid hit (block 95).

On the other hand, in the case where the value is used in at least onefuture request in the clip, the extraction logic is added to the messageto get the value from the response. The value is then stored as aproperty. (block 96) Lastly, the property is substituted for everysubsequent message request that has the name/value pair (block 98).

FIG. 10 shows an example graphical user interface window 100 thatdisplays the results following the application of a session templatepackage comprising two session templates to a test clip. As shown, thesummary information is shown as a pair of rows, each corresponding toone of the templates applied, Column entries in each row includeTemplate Name, Name (which will be the created Custom Property's name),Extracted Value, Found in Response (which is the response of the messagein the clip where the dynamic value was extracted from), and Used inRequests) (each of the future or subsequent message requests where asubstitution was made).

Person of skill in the art will appreciate that once a package has beencreated containing all of the specified session templates, with eachsession template including the logic on how to extract a single valueand store it in a property to substitute into subsequent requests, thatpackage can be applied to another recording for the same website withouthaving to perform further scanning. In other words, a user need onlyright-click on the Apply To A Test Clip option in field 92 to apply thepackage of templates to the load test. In addition, for customers thatare using well-defined frameworks like SAP, Oracle applications, and thelike, session template packages can be pre-created for them and shippedwithin the product. In other words, a user need only execute a fewclicks (e, g., of a mouse) to apply the package to a set of clips.

FIG. 11 shows an example network node 110, which may comprise any of thecomputers, servers, or electronic processing devices coupled with acommunications network, as described herein. Node 110 typicallycomprises a number of basic subsystems including a processor subsystem111, a main memory 112 and an input/output (I/O) subsystem 115. Data istransferred between main memory (“system memory”) 112 and processorsubsystem 111 over a memory bus 113, and between processor subsystem 111and I/O subsystem 115 over a system bus 116. Examples of the system busmay include the conventional data transport (or hyper transport) bus andthe conventional peripheral component interconnect (PCI) bus. Node 110may also comprise other hardware units/modules 114 coupled to system bus116 for performing additional data processing, algorithmic orcommunication functions. Alternatively, these functions may be performedby one or more processors of subsystem 111. Processor subsystem 111typically comprises one or more processors and a controller device thatincorporates a set of functions including a system memory controller,support for one or more system buses and memory access engines.

It should be understood that elements of the disclosed subject mattermay also be provided as a computer program product which may include amachine-readable storage medium (e.g., a memory) having stored thereoninstructions which may be used to program a computer (e.g., a processoror other electronic device) to perform a sequence of operations.Alternatively, the operations may be performed by a combination ofhardware and software. The machine-readable storage medium may include,but is not limited to, floppy diskettes, optical disks, CD-ROMs, andmagneto-optical disks, ROMs, FRAMs, EPROMs, EEPROMs, magnet or opticalcards, or other type of machine-readable medium suitable for storingelectronic instructions.

Additionally, although the present invention has been described inconjunction with specific embodiments, numerous modifications andalterations are well within the scope of the present invention.Accordingly, the specification and drawings are to be regarded in anillustrative rather than a restrictive sense,

1-12. (canceled)
 13. A computer-implemented method for applying asession template to a clip of messages that includes message requestsand message responses arranged in a sequence, the session templatecomprising an algorithm for locating and extracting a single value in amessage of a recorded load test session, the computer-implemented methodcomprising: applying the algorithm to each message response in thesequence until a non-empty value that matches the single value is foundin a message at a location in the clip; looking backwards in thesequence from the location to confirm h the single value was not used ina prior message request; searching the clip from the location to confirmthat the single value is used in a subsequent message request inassociation with a name stored in the session template; adding thealgorithm to the message to get the single value from the messegeresponse; and storing the single value as a variable of the sessiontemplate, wherein at run-time of a load test on a target website thevariable of the session template is applied to subsequent messagerequests that require a correct dynamic value sent back to the tar etwebsite.
 14. The computer-implemented method of claim 13 furthercomprising substituting the variable for every subsequent messagerequest that has the single value in association with the name.
 15. Thecomputer-implemented method of claim 13 wherein the single valuecomprises a token used for authentication.
 16. The computer-implementedmethod of claim 13 further comprising: bundling plurality of sessiontemplates into session template package; and applying the sessiontemplate package to the clip.
 17. The computer-implemented method ofclaim 13 wherein the variable is stored in a machine-readable storagemedium.
 18. A computer program product comprising a non-transitorycomputer-readable medium encoded with programmed instructions, executionof the programmed instructions by a computer operable to, provide agraphical user interface (GUI) that allows a user to create a sessiontemplate comprising an algorithm to extract a single value found in amessage response at a location in a sequence of messages that includemessage requests and message responses of recorded load test session ofa target website, the GUI further allowing the user to store the singlevalue as a property, and substitute the property in subsequent messagerequests, the GUI further allowing the user to bundle the sessiontemplate with one or more additional session templates as a package. 19.(canceled)
 20. The computer program product of claim 18 wherein the GUIfurther allows the user to apply the package to a different recordedload test ssession of the target website.
 21. The computer programproduct of claim 18 wherein the GUI further allows the user to specify astring used to scan the sequence of messages for a match with the singlevalue.